package com.example.demo.jvm;

import java.util.concurrent.TimeUnit;

/*
ttt
-Xms = 241M,-Xmx = 3572M
system memory=15.0625G
system memory=13.953125G
Heap
 PSYoungGen      total 75264K, used 7813K [0x000000076c500000, 0x0000000771900000, 0x00000007c0000000)
  eden space 64512K, 12% used [0x000000076c500000,0x000000076cca1420,0x0000000770400000)
  from space 10752K, 0% used [0x0000000770e80000,0x0000000770e80000,0x0000000771900000)
  to   space 10752K, 0% used [0x0000000770400000,0x0000000770400000,0x0000000770e80000)
 ParOldGen       total 172032K, used 0K [0x00000006c4e00000, 0x00000006cf600000, 0x000000076c500000)
  object space 172032K, 0% used [0x00000006c4e00000,0x00000006c4e00000,0x00000006cf600000)
 Metaspace       used 3312K, capacity 4564K, committed 4864K, reserved 1056768K
  class space    used 362K, capacity 388K, committed 512K, reserved 1048576K
 */
/*
-XX:+PrintFlagsInitial 查看所有的参数的默认初始值
-XX:+PrintFlagsFinal 查看所有的参数的最终值（可能会存在修改，不再是初始值）
具体查看某个参数的指令：jps：查看当前运行中的进程    jinfo -flag SurvivorRatio 进程id
-Xms: 设置初始堆空间内存（默认物理内存的1/64)
-Xmx: 设置最大堆空间内存（默认物理内存的1/4）
-Xmn: 设置新生代的大小（初始值及最大值）
-XX:NewRatio: 配置新生代中eden区与老年代在堆结构中的占比（默认1：2）
-XX:SurvivorRatio: 设置新生代中eden区和s0/s1空间的比例
-XX:MaxTenuringThreshold: 设置新生代垃圾的最大年龄
-XX:PrintGCDetails: 输出详细的gc处理日志
打印简要gc信息：1.-XX:+PrintGC 2.-verbose:gc
-XX:HandlePromotionFailure: 是否设置空间分配担保
 */
public class Memory {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("ttt");
        // 返回jvm堆内存总量
        long initialMemory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
        // 返回jvm试图使用的最大堆内存量
        long maxMemory = Runtime.getRuntime().maxMemory() / 1024 / 1024;
        System.out.println("-Xms = " + initialMemory + "M,-Xmx = " + maxMemory + "M");

        System.out.println("system memory=" + initialMemory * 64.0 / 1024 + "G");
        System.out.println("system memory=" + maxMemory * 4.0 / 1024 + "G");
        TimeUnit.MINUTES.sleep(10);
    }
}
